Virtualization has facilitated the creation of new virtual machine (VM) instances. As such, instances arise where there can exist a proliferation of barely-used VMs, as developers may forget to return (or intentionally postpone, anticipating reuse) unused VMs to a resource pool at the end of a project. However, existing system management technologies are generally unable to keep pace with this rapid proliferation, and the management cost of keeping all virtual machine images updated, both dormant and active, is significant.
While existing approaches for applying patches for online virtual machines address some scalability challenges, the patches themselves remain unreliable, and administrators in such approaches are required to manually fix failed updates. Additionally, once a failed update is fixed, the administrator must ensure that the patch itself is fixed or create yet another patch that can be fed to the tools for automatic application on the VMs. Accordingly, such tools do not help to significantly reduce the total application downtime, as a substantial amount of the downtime is needed to manually fix problems during the update process. Further, such tools do not patch dormant VM images. Consequently, a need exists to automatically and reliably propagate updates in a data center.